/*CREDITS:
Sounds:
Lucas Arts, Raven (JK2: Jedi Outcast, Up sound)
Fire sound, add sound - ?
Pumping - ID (ET: Quake Wars)
Westwood (Red Alert 2, prism shot)
EA (Command and Conquer 3, prism add)
Epic Games (Unreal Tournament 1, casingator)

Graphics:
Chronoteeth - Frankensprite
Bane - Muzzleflash
KeksDose - Projectile
Animating, tweaking and shit by me!
Borsch - AEOD folks
*/

ACTOR Erasus : Weapon 24502
{
	//$Category Weapons
	//$Title Erasus
	//$Sprite ERGGX0
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "You've got the ''Erasus'' dispersion shotrifle! All that I miss now... are dumplings. (3)"
	Obituary "%o was eradicated by %k's ''Erasus''."
	Weapon.UpSound "Weapons/ErasusUp"
	Weapon.SelectionOrder 6
	Weapon.AmmoType "ErasusAmmo"
	Weapon.AmmoGive 12
	Weapon.AmmoUse 4
	Weapon.AmmoType2 "ErasusCounter"
	Weapon.AmmoUse2 1
	Weapon.Kickback 75
	Weapon.SlotNumber 3
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 1.4
	Weapon.BobRangeY 0.6
	Weapon.BobRangeX 1.3
	Scale 0.9
	+NOALERT
	+ALT_AMMO_OPTIONAL
	States
	{
	Spawn:
		ERGG X -1
		Stop
	Ready:
		ERGG A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		Loop
	Deselect:
		ERGG A 0 A_TakeInventory("ErasusBarszcz",1)
		ERGG A 0 A_StopSound(5)
		ERGG A 0 A_ZoomFactor(1)
		ERGG A 0 A_Lower
		ERGG A 1 A_Lower
		Loop
	Select:
		ERGG A 0 A_Raise
		ERGG A 1 A_Raise
		Loop
	Fire:
		ERGL A 0 A_PlaySound("Weapons/PrismLoad1",1,0.8)
		ERGL A 0 A_Quake(2,24,0,32,"none")
		ERGL A 0 A_SetBlend("Red",0.1,22)
		ERGL ABCDEFGHIJK 2
		ERGG B 6
		ERGG B 0 A_ReFire("Fire2")
		Goto Unleash1
	Fire2:
	    ERGL A 0 A_JumpIfInventory("ErasusAmmo",5,1)
		Goto Unleash1
		ERGL A 0 A_PlaySound("Weapons/PrismLoad2",1,0.8)
		ERGL A 0 A_Quake(3,24,0,32,"none")
		ERGL A 0 A_SetBlend("Red",0.12,32)
		ERGL ABCDEFGHIJK 2
		ERGG B 4
		ERGG B 0 A_ReFire("Fire3")
		Goto Unleash2
	Fire3:
	    ERGL A 0 A_JumpIfInventory("ErasusAmmo",6,1)
		Goto Unleash2
		ERGL A 0 A_PlaySound("Weapons/PrismLoad3",1,0.8)
		ERGL A 0 A_Quake(4,24,0,32,"none")
		ERGL A 0 A_SetBlend("Red",0.14,42)
		ERGL ABCDEFGHIJK 2
		ERGG B 2
		Goto Unleash3
	Unleash1:
		ERGL A 0 A_Quake(3,25,0,128,"none")
		ERGL A 0 A_PlaySound("Weapons/PrismFire",6,0.8)
		ERGL A 0 A_PlaySound("Weapons/PrismAdd",5,0.8)
		ERGL A 0 A_AlertMonsters
		ERGL A 0 A_Recoil(6)
		ERGL A 0 A_GunFlash
		ERGL A 0 A_GiveInventory("ErasusCasing",4)
		ERGL A 0 A_FireCustomMissile("PrismProjectile1",0,1,4,-5)
		ERGL A 0 A_SetBlend("Red",0.3,35)
		ERGL A 0 A_SetAngle(Angle-2)
		ERGL A 0 A_SetPitch(Pitch-3)
		ERGF A 1 Bright Offset(4,36) A_ZoomFactor(0.995)
		ERGL A 0 A_SetAngle(Angle-1)
		ERGL A 0 A_SetPitch(Pitch-2)
		ERGF B 1 Bright Offset(8,40) A_ZoomFactor(0.98)
		ERGL A 0 A_SetAngle(Angle-0.5)
		ERGL A 0 A_SetPitch(Pitch-1)
		ERGF C 1 Offset(12,44) A_ZoomFactor(0.97)
		ERGL A 0 A_SetAngle(Angle-0.25)
		ERGL A 0 A_SetPitch(Pitch-0.5)
		Goto Rest
	Unleash2:
		ERGL A 0 A_Quake(4,25,0,164,"none")
		ERGL A 0 A_TakeInventory("ErasusAmmo",1,TIF_NOTAKEINFINITE)
		ERGL A 0 A_PlaySound("Weapons/PrismFire",6,0.8)
		ERGL A 0 A_PlaySound("Weapons/PrismAdd",5,0.8)
		ERGL A 0 A_AlertMonsters
		ERGL A 0 A_Recoil(10)
		ERGL A 0 A_GunFlash
		ERGL A 0 A_GiveInventory("ErasusCasing",5)
		ERGL A 0 A_FireCustomMissile("PrismProjectile2",0,1,4,-5)
		ERGL A 0 A_SetBlend("Red",0.3,35)
		ERGL A 0 A_SetAngle(Angle-3)
		ERGL A 0 A_SetPitch(Pitch-4)
		ERGF A 1 Bright Offset(4,36) A_ZoomFactor(0.99)
		ERGL A 0 A_SetAngle(Angle-2)
		ERGL A 0 A_SetPitch(Pitch-3)
		ERGF B 1 Bright Offset(8,40) A_ZoomFactor(0.97)
		ERGL A 0 A_SetAngle(Angle-1)
		ERGL A 0 A_SetPitch(Pitch-1.5)
		ERGF C 1 Offset(12,44) A_ZoomFactor(0.965)
		ERGL A 0 A_SetAngle(Angle-0.25)
		ERGL A 0 A_SetPitch(Pitch-0.5)
		Goto Rest
	Unleash3:
		ERGL A 0 A_Quake(5,25,0,192,"none")
		ERGL A 0 A_TakeInventory("ErasusAmmo",2,TIF_NOTAKEINFINITE)
		ERGL A 0 A_PlaySound("Weapons/PrismFire",6,0.8)
		ERGL A 0 A_PlaySound("Weapons/PrismAdd",5,0.8)
		ERGL A 0 A_AlertMonsters
		ERGL A 0 A_Recoil(15)
		ERGL A 0 A_GunFlash
		ERGL A 0 A_GiveInventory("ErasusCasing",6)
		ERGL A 0 A_FireCustomMissile("PrismProjectile3",0,1,4,-5)
		ERGL A 0 A_SetBlend("Red",0.3,35)
		ERGL A 0 A_SetAngle(Angle-4)
		ERGL A 0 A_SetPitch(Pitch-5)
		ERGF A 1 Bright Offset(4,36) A_ZoomFactor(0.99)
		ERGL A 0 A_SetAngle(Angle-3)
		ERGL A 0 A_SetPitch(Pitch-4)
		ERGF B 1 Bright Offset(8,40) A_ZoomFactor(0.97)
		ERGL A 0 A_SetAngle(Angle-1)
		ERGL A 0 A_SetPitch(Pitch-1.5)
		ERGF C 1 Offset(12,44) A_ZoomFactor(0.96)
		ERGL A 0 A_SetAngle(Angle-0.5)
		ERGL A 0 A_SetPitch(Pitch-1)
		Goto Rest
	Rest:
		ERGF D 1 Offset(15,47) A_ZoomFactor(0.965)
		ERGF D 1 Offset(18,50) A_ZoomFactor(0.96)
		ERGF E 1 Offset(20,51) A_ZoomFactor(0.97)
		ERGF E 1 Offset(21,52) A_ZoomFactor(0.98)
		ERGF F 1 Offset(22,53) A_ZoomFactor(0.985)
		ERGF F 1 Offset(23,54) A_ZoomFactor(0.99)
		ERGF G 1 A_ZoomFactor(0.995)
		ERGF G 1 A_ZoomFactor(1)
		ERGF H 6
		ERGF I 4
		ERGF I 1 Offset(22,53)
		ERGF I 1 Offset(21,52)
		ERGF J 1 Offset(20,51)
		ERGF J 1 Offset(19,50)
		ERGF K 1 Offset(17,48)
		ERGF K 1 Offset(15,46)
		ERGF L 1 Offset(13,44)
		ERGF L 1 Offset(10,41)
		ERGF M 1 Offset(8,39)
		ERGF M 1 Offset(6,37)
		ERGF N 1 Offset(4,35)
		ERGF N 1 Offset(2,33)
		Goto Ready
	AltFire:
		ERGG A 0 A_JumpIfInventory("BorsigWaffelTrager",1,"AltFire2")
		ERGL A 0 A_JumpIfInventory("ErasusAmmo",1,1)
		Goto Ready
		/*ERGL A 0 A_PlaySound("Weapons/PrismLoad1",1,0.9)
		ERGL A 0 A_Quake(2,24,0,32,"none")
		ERGL A 0 A_SetBlend("Red",0.1,22)
		ERGL ABCDEFGHIJK 2
		ERGG B 6*/
	AltLoop:
		ERGL A 0 A_JumpIfInventory("ErasusAmmo",1,1)
		Goto AltFinish
		ERGL A 0 A_Quake(3,15,0,128,"none")
		ERGL A 0 A_PlaySound("Weapons/PrismMinor",1,1.0)
		ERGL A 0 A_PlaySound("Weapons/PrismAdd",5,0.7)
		ERGL A 0 A_AlertMonsters
		ERGL A 0 A_Recoil(4)
		ERGL A 0 A_GunFlash
		ERGL A 0 A_GiveInventory("ErasusCasing",1)
		ERGL A 0 A_TakeInventory("ErasusAmmo",1,TIF_NOTAKEINFINITE)
		ERGL A 0 A_FireCustomMissile("PrismProjectileMinor",0,0,4,-5)
		ERGL A 0 A_SetBlend("Red",0.1,20)
		ERGL A 0 A_SetAngle(Angle-0.5)
		ERGL A 0 A_SetPitch(Pitch-1)
		ERGF A 1 Bright Offset(4,36) A_ZoomFactor(0.995)
		ERGL A 0 A_SetAngle(Angle-0.25)
		ERGL A 0 A_SetPitch(Pitch-0.5)
		ERGF B 1 Bright Offset(8,40) A_ZoomFactor(0.99)
		ERGL A 0 A_SetAngle(Angle-0.125)
		ERGL A 0 A_SetPitch(Pitch-0.25)
		ERGF C 1 Offset(12,44) A_ZoomFactor(0.98)
		ERGF D 1 Offset(13,45) A_ZoomFactor(0.99)
		ERGF E 1 Offset(14,46) A_ZoomFactor(0.995)
		ERGF F 1 Offset(15,47) A_ZoomFactor(0.9975)
		ERGF G 1 Offset(14,46) A_ZoomFactor(1)
		ERGF H 1 Offset(13,45)
		ERGF I 1 Offset(11,43)
		ERGF J 1 Offset(9,41)
		ERGG A 0 A_ReFire("AltLoop")
	AltFinish:
		ERGF K 1 Offset(7,39)
		ERGF L 1 Offset(5,37)
		ERGF M 1 Offset(3,35)
		ERGF N 1 Offset(2,33)
		//ERGG A 0 A_ReFire("AltLoop")
		Goto Ready
	AltFire2:
		ERGG A 0 A_JumpIfInventory("ErasusCounter",0,"Ready")
		ERGG A 0 A_JumpIfInventory("ErasusCasing",8,1)
		Goto Ready
	    ERGF N 0 A_PlaySound("Weapons/ErasusShellStart",5)
		ERGF N 0 A_Quake(2,10,0,32,"none")
		ERGF N 1 Offset(1,33)
		ERGF N 1 Offset(3,35)
		ERGF M 1 Offset(5,37)
		ERGF M 1 Offset(8,40)
		ERGF L 1 Offset(11,43)
		ERGF L 1 Offset(13,45)
		ERGF J 1 Offset(15,47)
		ERGF J 1 Offset(17,49)
		ERGF I 1 Offset(18,50)
		ERGF I 7 Offset(19,51)
	AltLoop2:
		ERGF N 0 A_JumpIfInventory("ErasusCounter",0,"AltStop")
		ERGF N 0 A_JumpIfInventory("ErasusCasing",8,1)
		Goto AltStop
		ERGF N 0 A_Quake(4,4,0,128,"none")
	    ERGF N 0 A_PlaySound("Weapons/ErasusShellLoop",5,1.0,1)
		ERGF N 0 A_SetAngle(Angle+frandom(-0.25,+0.25))
		ERGF N 0 A_SetPitch(Pitch+frandom(-0.25,+0.25))
		ERGF H 1 Offset(20,52)
		ERGF N 0 A_TakeInventory("ErasusCasing",2)
		ERGF N 0 A_GiveInventory("ErasusCounter",2)
		ERGF N 0 A_SetAngle(Angle+frandom(-0.25,+0.25))
		ERGF N 0 A_SetPitch(Pitch+frandom(-0.25,+0.25))
		ERGF H 1 Offset(21,53)
		ERGF N 0 A_GiveInventory("ErasusCounter",2)
		ERGF N 0 A_TakeInventory("ErasusCasing",2)
		ERGF N 0 A_SetAngle(Angle+frandom(-0.25,+0.25))
		ERGF N 0 A_SetPitch(Pitch+frandom(-0.25,+0.25))
		ERGF I 1 Offset(22,54)
		ERGF N 0 A_GiveInventory("ErasusCounter",2)
		ERGF N 0 A_TakeInventory("ErasusCasing",2)
		ERGF N 0 A_SetAngle(Angle+frandom(-0.25,+0.25))
		ERGF N 0 A_SetPitch(Pitch+frandom(-0.25,+0.25))
		ERGF I 1 Offset(21,53)
		ERGF N 0 A_GiveInventory("ErasusCounter",2)
		ERGF N 0 A_TakeInventory("ErasusCasing",2)
		ERGF I 0 A_ReFire("AltLoop2")
		Goto AltStop
	AltStop:
	    ERGF E 0 A_PlaySound("Weapons/ErasusShellStop",5)
		ERGF E 0 A_Quake(2,15,0,128,"none")
		ERGF J 1 Offset(20,52) A_ZoomFactor(0.96)
		ERGF J 1 Offset(19,51) A_ZoomFactor(0.97)
		ERGF K 1 Offset(17,49) A_ZoomFactor(0.98)
		ERGF K 1 Offset(15,47) A_ZoomFactor(0.985)
		ERGF L 1 Offset(13,45) A_ZoomFactor(0.99)
		ERGF L 1 Offset(10,42) A_ZoomFactor(0.9925)
		ERGF M 1 Offset(8,40) A_ZoomFactor(0.995)
		ERGF M 1 Offset(6,38) A_ZoomFactor(0.9975)
		ERGF N 1 Offset(4,36) A_ZoomFactor(1)
		ERGF N 1 Offset(3,35)
		ERGG A 1 Offset(2,34)
		ERGG A 1 Offset(1,33)
		Goto Ready
	Reload:
		ERGG A 0 A_JumpIfInventory("BorsigWaffelTrager",1,"Reload2")
		ERGG A 0 A_JumpIfInventory("ErasusCasing",4,1)
		Goto Ready
	    ERGF N 0 A_JumpIfInventory("ErasusBarszcz",1,"ReloadLooplet")
	    ERGF N 0 A_PlaySound("Weapons/ErasusBarszczStart",5)
		ERGF N 0 A_Quake(2,10,0,32,"none")
		ERGF N 1 Offset(1,33)
		ERGF N 1 Offset(3,35)
		ERGF M 1 Offset(5,37)
		ERGF M 1 Offset(8,40)
		ERGF L 1 Offset(11,43)
		ERGF L 1 Offset(13,45)
		ERGF J 1 Offset(15,47)
		ERGF J 1 Offset(17,49)
		ERGF I 1 Offset(18,50)
		ERGF I 1 Offset(19,51)
	ReloadLooplet:
		ERGF H 0 A_JumpIfInventory("ErasusAmmo",1,1)
		Goto ReloadLoop
	    ERGF N 0 A_PlaySound("Weapons/ErasusBarszczLoop",5,1.0,1)
		ERGF N 0 A_GiveInventory("ErasusBarszcz",1)
		ERGF N 0 A_Quake(2,4,0,128,"none")
		ERGF N 0 A_TakeInventory("ErasusAmmo",1)
		ERGF N 0 A_GiveInventory("ErasusCasing",1)
		ERGF N 0 A_ZoomFactor(0.95)
		ERGF N 0 A_SetAngle(Angle-0.1)
		ERGF N 0 A_SetPitch(Pitch-0.25)
		ERGF H 0 A_FireCustomMissile("BarszczProjectile",frandom(-5.0, 5.0),0,5,-5,0,frandom(-5.0, 5.0))
		ERGF H 1 Offset(20,52)
		ERGF N 0 A_ZoomFactor(0.951)
		ERGF N 0 A_SetAngle(Angle-0.1)
		ERGF N 0 A_SetPitch(Pitch-0.25)
		ERGF H 0 A_FireCustomMissile("BarszczProjectile",frandom(-5.0, 5.0),0,5,-5,0,frandom(-5.0, 5.0))
		ERGF H 1 Offset(21,53)
		ERGF N 0 A_ZoomFactor(0.952)
		ERGF N 0 A_SetAngle(Angle-0.1)
		ERGF N 0 A_SetPitch(Pitch-0.25)
		ERGF I 0 A_FireCustomMissile("BarszczProjectile",frandom(-5.0, 5.0),0,5,-5,0,frandom(-5.0, 5.0))
		ERGF I 1 Offset(22,54)
		ERGF N 0 A_ZoomFactor(0.951)
		ERGF N 0 A_SetAngle(Angle-0.1)
		ERGF N 0 A_SetPitch(Pitch-0.25)
		ERGF I 0 A_FireCustomMissile("BarszczProjectile",frandom(-5.0, 5.0),0,5,-5,0,frandom(-5.0, 5.0))
		ERGF I 1 Offset(21,53)
		ERGF N 0 A_WeaponReady(WRF_NOFIRE|WRF_NOBOB|WRF_NOSWITCH|WRF_ALLOWRELOAD)
	ReloadStop:
		ERGF J 1 Offset(20,52) A_ZoomFactor(0.96)
	    ERGF N 0 A_PlaySound("Weapons/ErasusBarszczStop",5)
		ERGF E 0 A_Quake(2,15,0,128,"none")
		ERGF E 0 A_TakeInventory("ErasusBarszcz",1)
		ERGF J 1 Offset(19,51) A_ZoomFactor(0.97)
		ERGF K 1 Offset(17,49) A_ZoomFactor(0.98)
		ERGF K 1 Offset(15,47) A_ZoomFactor(0.985)
		ERGF L 1 Offset(13,45) A_ZoomFactor(0.99)
		ERGF L 1 Offset(10,42) A_ZoomFactor(0.9925)
		ERGF M 1 Offset(8,40) A_ZoomFactor(0.995)
		ERGF M 1 Offset(6,38) A_ZoomFactor(0.9975)
		ERGF N 1 Offset(4,36) A_ZoomFactor(1)
		ERGF N 1 Offset(3,35)
		ERGG A 1 Offset(2,34)
		ERGG A 1 Offset(1,33)
		Goto Ready
	Reload2:
        ERGG A 0 A_JumpIfInventory("ErasusCounter",1,1)
		Goto Ready
	    ERGF N 0 A_PlaySound("Weapons/ErasusShellStart",1)
		ERGF N 0 A_Quake(2,10,0,32,"none")
		ERGF N 1 Offset(1,33)
		ERGF N 1 Offset(3,35)
		ERGF M 1 Offset(5,37)
		ERGF M 1 Offset(8,40)
		ERGF L 1 Offset(11,43)
		ERGF L 1 Offset(13,45)
		ERGF J 1 Offset(15,47)
		ERGF J 1 Offset(17,49)
		ERGF I 1 Offset(18,50)
		ERGF I 1 Offset(19,51)
	ReloadLoop:
		ERGG A 0 A_JumpIfInventory("QuadUpgrade",1,"QuadUnload")
	Derp:
		ERGG A 0 A_TakeInventory("ErasusCounter",1)
		ERGG A 0 A_FireCustomMissile("ShellProjectile",frandom(-2.0, 2.0),0,4,-5,0,frandom(-2.0, 2.0))
		Goto Checker
	QuadUnload:
		ERGG A 0 A_SetBlend("Blue",0.1,18)
		ERGG A 0 A_PlaySound("Weapons/QuadShot","Auto")
	Twerp:
		ERGG A 0 A_JumpIfInventory("ErasusCounter",1,1)
		Goto UnloadAnimation
		ERGG A 0 A_TakeInventory ("ErasusCounter",1)
		ERGG A 0 A_FireCustomMissile("QuadShellProjectile",frandom(-2.0, 2.0),0,4,-5,0,frandom(-2.0, 2.0))
		Goto Checker
	Checker:
	    ERGG A 0 A_JumpIfInventory("ErasusCounter",1,"ReloadLoop")
		Goto UnloadAnimation
	UnloadAnimation:
	    ERGF E 0 A_PlaySound("Weapons/ErasusShellRelease",1)
		ERGF E 0 A_Quake(7,17,0,128,"none")
		ERGF E 0 A_Recoil(7)
		ERGF E 0 A_SetPitch(Pitch-4)
		ERGF E 0 A_SetAngle(Angle-2)
		ERGF E 1 Offset(18,50) A_ZoomFactor(0.96)
		ERGF E 0 A_SetPitch(Pitch-2)
		ERGF E 0 A_SetAngle(Angle-1)
		ERGF E 1 Offset(15,47) A_ZoomFactor(0.97)
		ERGF E 0 A_SetPitch(Pitch-1)
		ERGF E 0 A_SetAngle(Angle-0.5)
		ERGF D 1 Offset(12,44) A_ZoomFactor(0.98)
		ERGF E 0 A_SetPitch(Pitch-0.5)
		ERGF E 0 A_SetAngle(Angle-0.25)
		ERGF D 1 Offset(9,41) A_ZoomFactor(0.985)
		ERGF E 0 A_SetPitch(Pitch-0.25)
		ERGF E 0 A_SetAngle(Angle-0.125)
		ERGF C 1 Offset(6,38) A_ZoomFactor(0.99)
		ERGF E 0 A_SetPitch(Pitch-0.1)
		ERGF E 0 A_SetAngle(Angle-0.05)
		ERGF C 1 Offset(3,35) A_ZoomFactor(0.995)
		ERGG A 1 Offset(2,34) A_ZoomFactor(0.9975)
		ERGG A 1 Offset(1,33) A_ZoomFactor(1)
		Goto Ready
	Zoom:
	    ERGG A 0 A_PlaySound("Weapons/ErasusMode",1)
		ERGG A 0 A_JumpIfInventory("BorsigWaffelTrager",1,"UnZoom")
		ERGG A 0 A_GiveInventory("BorsigWaffelTrager",1)
		ERGG A 0 A_Print("Casingator mode.")
	Honk:
		ERGG B 1 Offset(2,34)
		ERGG B 1 Offset(4,36)
		ERGG B 1 Offset(6,38)
		ERGG B 1 Offset(8,42)
		ERGG B 1 Offset(8,41)
		ERGG B 1 Offset(8,40)	
		ERGG B 1 Offset(7,39)
		ERGG B 1 Offset(6,38)
		ERGG B 1 Offset(5,37)
		ERGG B 1 Offset(4,36)
		ERGG B 1 Offset(3,35)
		ERGG B 1 Offset(2,34)
		ERGG B 1 Offset(1,33)
		Goto Ready
	UnZoom:
		ERGG A 0 A_TakeInventory("BorsigWaffelTrager",1)
		ERGG A 0 A_Print("Standard mode.")
		Goto Honk
	Flash:
		TNT1 A 3 A_Light2
		TNT1 A 3 A_Light1
		TNT1 A 1 A_Light0
		Stop
	}
}

actor ErasusCounter : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 400
	ammo.backpackamount 0
	ammo.backpackmaxamount 400
	Inventory.Icon TNT1A0 //"ERGGX0"
}

Actor BorsigWaffelTrager : Inventory { Inventory.MaxAmount 1 }
Actor ErasusBarszcz : Inventory { Inventory.MaxAmount 1 }